﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace HotelManagement
{
    public partial class UsersFrm : Form
    {
        int u_id;
        SqlConnection Cnn = new SqlConnection(Globals.DBConnection());
        DataSet ds = new DataSet();
        SqlDataAdapter da;


        public UsersFrm()
        {
            InitializeComponent();
        }

        private void UsersFrm_Load(object sender, EventArgs e)
        {
            da = new SqlDataAdapter("select us_id as[کد],us_fname as[نام],us_lname as[نام خانوادگی],us_username as[نام کاربری] from Users" , Cnn);
            da.Fill(ds);
            dGViewUser.DataSource = ds.Tables[0];
            dGViewUser.Columns[0].Visible = false;



        }

        private void BtnUserSave_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(fnameTxt.Text) && !string.IsNullOrEmpty(LnameTxt.Text) && !string.IsNullOrEmpty(UserTxt.Text) && !string.IsNullOrEmpty(PassTxt.Text) && !string.IsNullOrEmpty(RpassTxt.Text) && !string.IsNullOrEmpty(comboBox1.Text))
            {
                if (PassTxt.Text == RpassTxt.Text)
                {

                    SqlCommand SelectUser = new SqlCommand("SELECT us_id FROM Users WHERE us_username=@us_username", Cnn);
                    SelectUser.Parameters.AddWithValue("@us_username", UserTxt.Text.Trim());
                    Cnn.Open();
                    SqlDataReader dr = SelectUser.ExecuteReader();
                    bool hasrows = dr.HasRows;
                    Cnn.Close();

                    if (hasrows)
                    {
                        MessageBox.Show("این نام کاربری قبلا در سیستم ثبت شده است");
                    }

                    else
                    {

                        SqlCommand SaveINDB = new SqlCommand("INSERT INTO Users(us_fname,us_lname,us_username,us_password,us_role,us_active) values (@us_fname,@us_lname,@us_username,@us_password,@us_role,@us_active)", Cnn);

                        SaveINDB.Parameters.AddWithValue("@us_fname", fnameTxt.Text.Trim());
                        SaveINDB.Parameters.AddWithValue("@us_lname", LnameTxt.Text.Trim());
                        SaveINDB.Parameters.AddWithValue("@us_username", UserTxt.Text.Trim());
                        SaveINDB.Parameters.AddWithValue("@us_password", PassTxt.Text.Trim());
                        SaveINDB.Parameters.AddWithValue("@us_role", comboBox1.SelectedItem.ToString().Trim());
                        SaveINDB.Parameters.AddWithValue("@us_active", false);

                        Cnn.Open();
                        SaveINDB.ExecuteNonQuery();
                        Cnn.Close();

                        ds.Clear();
                        da.Fill(ds);
                        dGViewUser.DataSource = ds.Tables[0];
                    }
                }
                else
                {
                    MessageBox.Show("رمز عبور را دوباره وارد کنید");
                    PassTxt.Text = "";
                    RpassTxt.Text = "";

                }

            }
            else
            {
                MessageBox.Show("لطفا همه قسمت ها را به درستی تکمیل نمایید");
            }
        }

        private void BtnUserDelete_Click(object sender, EventArgs e)
        {
            SqlCommand DeleteCMD = new SqlCommand("DELETE FROM Users WHERE us_id=@u_id", Cnn);
            DeleteCMD.Parameters.AddWithValue("@u_id", u_id);
            Cnn.Open();
            try
            {
                DeleteCMD.ExecuteNonQuery();
            }
            catch (SqlException)
            {
                MessageBox.Show("این کابر در حال استفاده از سیستم است یا در سیستم اطلاعات ثبت کرده است", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Cnn.Close();
                return;
            }
            finally
            {
                Cnn.Close();
            }
            Cnn.Close();

            ds.Clear();
            da.Fill(ds);
            dGViewUser.DataSource = ds.Tables[0];
            BtnUserEdit.Enabled = false;
            BtnUserDelete.Enabled = false;
            fnameTxt.Text="";
            LnameTxt.Text="";
            UserTxt.Text = "";
            PassTxt.Text = "";
            RpassTxt.Text = "";
            MessageBox.Show("حذف با موفقیت انجام شد");
        }

        private void BtnUserEdit_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(fnameTxt.Text) && !string.IsNullOrEmpty(LnameTxt.Text) && !string.IsNullOrEmpty(UserTxt.Text) && !string.IsNullOrEmpty(PassTxt.Text) && !string.IsNullOrEmpty(RpassTxt.Text))
            {
                if (PassTxt.Text == RpassTxt.Text)
                {
                    SqlCommand Updateuser = new SqlCommand("update users set us_fname=@us_fname,us_lname=@us_lname,us_username=@us_username,us_password=@us_password WHERE us_id=@u_id", Cnn);
                    Updateuser.Parameters.AddWithValue("@us_fname", fnameTxt.Text.Trim());
                    Updateuser.Parameters.AddWithValue("@us_lname", LnameTxt.Text.Trim());
                    Updateuser.Parameters.AddWithValue("@us_username", UserTxt.Text.Trim());
                    Updateuser.Parameters.AddWithValue("@us_password", PassTxt.Text.Trim());
                    Updateuser.Parameters.AddWithValue("@u_id", u_id);

                    Cnn.Open();
                    Updateuser.ExecuteNonQuery();
                    Cnn.Close();

                    ds.Clear();
                    da.Fill(ds);
                    dGViewUser.DataSource = ds.Tables[0];

                    BtnUserDelete.Enabled = false;
                    BtnUserEdit.Enabled = false;
                    fnameTxt.Text = "";
                    LnameTxt.Text = "";
                    UserTxt.Text = "";
                    PassTxt.Text = "";
                    RpassTxt.Text = "";
                    MessageBox.Show("ویرایش با موفقیت انجام شد");

                }
                else
                {
                    MessageBox.Show("رمز عبور را دوباره وارد کنید");
                    PassTxt.Text = "";
                    RpassTxt.Text = "";

                }

            }
            else
            {
                MessageBox.Show("لطفا همه قسمت ها را به درستی تکمیل نمایید");
            }
        }

        private void dGViewUser_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            fnameTxt.Text = dGViewUser.CurrentRow.Cells[1].Value.ToString();
            LnameTxt.Text = dGViewUser.CurrentRow.Cells[2].Value.ToString();
            UserTxt.Text = dGViewUser.CurrentRow.Cells[3].Value.ToString();

            u_id = (int)dGViewUser.CurrentRow.Cells[0].Value;
            BtnUserDelete.Enabled = true;
            BtnUserEdit.Enabled = true;
        }
    }
}
